//
//  main.c
//  常见字符串函数
//
//  Created by ws on 2017/7/20.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>
#include <string.h>
/**
 用来计算字符串长度的函数 strlen(const char *__s);不包含\0
 */
void test(){
    int len = strlen("today");//不包括\0
    printf("%d\n",len);
}
/**
 拷贝
 strcpy(<#char *__dst#>, <#const char *__src#>) 把src的内容拷贝到dst中 他会覆盖dst中原来的内容,他会把src中的\0也会拷贝过来,没有覆盖的内容不会变 (const的作用就是src的内容不会被改变)
 注意:如果src的长度超过了dst所容纳的长度就可能导致程序崩溃
 */
void test1(){
    char dest[10] = "hahahahah";
    char src[] = "today";
    strcpy(dest, src);
    printf("%s\n",dest);//结果: today
    for (int i = 0; i < 10; i++) {
        printf("%c",dest[i]);//(结果:todayahah)
   }
    printf("\n");
}
/**
 拷贝
 strncpy(<#char *__dst#>, <#const char *__src#>, <#size_t __n#>)  把src的内容拷贝到dst中 他会覆盖dst中原来的内容,他会把src中的\0也会拷贝过来,没有覆盖的内容不会变 (const的作用就是src的内容不会被改变)
 注意:
  1.如果src的长度超过了dst所容纳的长度就可能导致程序崩溃
  2.最后一个参数:指定要拷贝字符串的长度,不包括\0
 */
void test2(){
    char dest[10] = "hahahahah";
    char src[] = "today";
    int len = sizeof(src) - 1;
    //最后一个参数:指定要拷贝多长的字符串
    strncpy(dest, src,len);
    printf("%s\n",dest);
}
/**
 字符串拼接的函数
 strcat(<#char *__s1#>, <#const char *__s2#>):把s2内容拼接在s1的后面(从s1中第一个\0的位置开始拼接的)
 注意:
 1.如果s1的长度超过了s2所容纳的长度就可能导致程序崩溃
 */
void test3(){
    char dest[20] = "today";
    char src[] = "good day";
    strcat(dest, src);
    printf("%s\n",dest);
}
/**
 strncat(<#char *__s1#>, <#const char *__s2#>, <#size_t __n#>) : size_t类型就是unsigned long类型
 注意:
 1.如果s1的长度超过了s2所容纳的长度就可能导致程序崩溃
 */
void test4(){
    char dest[20] = "today";
    char src[] = "good day";
    //size_t类型就是unsigned long类型
    size_t len = sizeof(dest) - strlen(dest) - 1;//计算需要拼接的长度
    strncat(dest, src, len);

    printf("%s\n",dest);
}
/**
 比较两个字符串
  strcmp(<#const char *__s1#>, <#const char *__s2#>):s1和s2从第一个字符开始逐个比较,如果相等就找后面的字符是否相等,如果都相同就返回0,如果遇到不相等的字符就返回这两个字符的ASCII码的差值
 
 */
void test5(){
    char dest[20] = "today";
    char src[] = "today";
    int a = strcmp(dest, src);
    
    printf("%d\n",a);
}
/**
 检查字符串中是否包含某个字符，如果包含返回该字符的索引，如果不包含返回-1
 */
int indexOfCharInString(char string[],char key){
    //  定义一个变量记录当前所查找索引
    int index = 0;
    //  如果字符串没有结束就接着找
    while (string[index] != '\0') {
        //        如果找到了就返回
        if (string[index] == key) {
            return index;
        }
        index++;
    }
    //如果没有找到就返回-1
    return -1;
}
int main(int argc, const char * argv[]) {


    return 0;
}
